﻿<html>
	<head>
		<title>Android通用API示例</title>
		<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
        <!-- 为了达到demo能在其它项目中运行，这里动态引入android的实例对象 -->
        <script type="text/javascript" src="load_js_utils.js"></script>
        <script type="text/javascript">
				// 设置状态栏背景颜色
				function setStateBarColor() {
					var color = prompt("请输入颜色","#8000FF00");
					if(color){
						app.setStateBarColor(color);
					}
				}

				// 设置标题背景颜色
				function setTitleBarColor() {
					var color = prompt("请输入颜色","#800000FF");
					if(color){
						app.setTitleBarColor(color);
					}
				}

				// 设置标题文字
				function setTitleText() {
					var title = prompt("请输入标题","我是标题内容");
					if(title){
						app.setTitleText(title);
					}
				}

				// 设置返回图标url地址
				function setBackImageUrl() {
					var url = prompt("请输入返回图标url地址","https://z3.ax1x.com/2021/07/21/WUDL1P.png");
					if(url){
						app.setBackImageUrl(url);
					}
				}

				// 设置右边按钮文字
				function setRightText() {
					var text = prompt("请输入按钮文字","菜单");
					if(text){
						app.setRightText(text);
					}
				}

				// 设置右边按钮图标
				function setRightImage() {
					var url = prompt("请输入按钮图标url地址","https://z3.ax1x.com/2021/07/21/WUDqpt.png");
					if(url){
						app.setRightImage(url);
					}
				}

				// 启用下拉刷新
				function openRefresh() {
					app.setEnableRefresh(true);
					alert("已启用，请下拉页面试试");
				}

				// app下来刷新回调函数
				function onAppWebRefresh() {
					alert("收到下拉刷新");
					window.location.reload();
					//app.stopRefresh();
				}

				// app点击标题栏右边Text回调函数
				function onAppWebRightTextClick() {
					alert("我是右边文字按钮，我被点击了");
				}

				// app点击标题栏右边Image回调函数
				function onAppWebRightImageClick() {
					alert("我是右边图标按钮，我被点击了");
				}

				// app点击返回按钮回调函数
				// 返回true：表示h5已经处理改事件，app不做任何操作
				// 返回非true或h5没有提供该回调函数：app关闭当前浏览器窗口
				//function onAppWebBackClick() {
				//	alert("我是左边返回按钮，我被点击了");
				//	return true;
				//}


				/*
				 * 二级页面设置的返回数据，返回到当前页面时，app回将二级h5返回的数据回调到此函数
				 * requestCode: 当前页面打开二级页面时传递的请求码
				 * resultData：二级页面设置的返回数据
				 */
				function onAppWebResult(requestCode, resultData) {
					alert("收到返回数据：requestCode=" + requestCode + ", resultData=" + resultData);
				}

				/*
				 * 显示加载框（一般用于提交数据，请求接口等耗时操作）
				 *
				 */
				function showLoadingDialog() {
					//1.调用app的加载框
					app.showProgressDialog("数据保存中...");
					//可以是否能取消
					// 第一个参数：进度框提示文案
					// 第二个参数：点击加载框外是否取消弹框
					// 第三个参数：点击手机的返回键是否可取消弹框
					//app.showProgressDialog("数据保存中...", true, true);

					// 2.取消进度框，这里使用setTimeout模拟耗时3秒
					window.setTimeout(function(){
						app.hideProgressDialog();
					}, 3000);

				}

				/*
				 * 显示进度框（模拟文件下载）
				 *
				 */
				function showProgressDialog() {
					var num = 0;
					app.showProgressDialog("已下载 " + num + "%");
					var id = window.setInterval(function(){
						if(num > 100) {
							app.hideProgressDialog();
							window.clearInterval(id);
						} else {
							app.showProgressDialog("已下载 " + num + "%");
							num += 10;
						}
					}, 500);
				}

				// 当前页面打开二级页面
				function openUrlInCurrentBrowser(targetUrl) {
                    // 实际项目中不需要调用appendParamToUrl，直接使用targetUrl，
				    // 这里只是为了demo可以在不同项目中演示运行
				    // 因为不同项目注入的android对象不一样，这里只是动态设置android对象而已
				    var newUrl = appendParamToUrl(targetUrl);
				    window.location.href = newUrl;
				}

                // api方式打开新浏览器窗口（只能完整url）
				function apiOpenNewBrowser(title, targetUrl) {
				    // 实际项目中不需要调用appendParamToUrl，直接使用targetUrl，
				    // 这里只是为了demo可以在不同项目中演示运行
				    // 因为不同项目注入的android对象不一样，这里只是动态设置android对象而已
				    var newUrl = appendParamToUrl(targetUrl);
                    app.openNewBrowser(title, newUrl);
				}

                // api方式打开新浏览器窗口（需要返回数据）
                function apiOpenNewBrowserForResult(title, targetUrl, requestCode) {
                    // 实际项目中不需要调用appendParamToUrl，直接使用targetUrl，
				    // 这里只是为了demo可以在不同项目中演示运行
				    // 因为不同项目注入的android对象不一样，这里只是动态设置android对象而已
                    var newUrl = appendParamToUrl(targetUrl);
                    // 下级页面如果调用setResultData(str)，返回到本页面时，app会回调js的onAppWebResult(requestCode, resultData)方法
                    app.openNewBrowser(title, newUrl, requestCode);
                }

                // url方式打开新浏览器窗口（支持相对url）
				function urlOpenNewBrowser(targetUrl) {
				    // 实际项目中不需要调用appendParamToUrl，直接使用targetUrl，
				    // 这里只是为了demo可以在不同项目中演示运行
				    // 因为不同项目注入的android对象不一样，这里只是动态设置android对象而已
				    var newUrl = appendParamToUrl(targetUrl);
                    window.location.href = newUrl;
				}

				// url方式打开新浏览器窗口（需要返回数据）
				function urlOpenNewBrowserForResult(targetUrl) {
				    // 实际项目中不需要调用appendParamToUrl，直接使用targetUrl，
				    // 这里只是为了demo可以在不同项目中演示运行
				    // 因为不同项目注入的android对象不一样，这里只是动态设置android对象而已
				    var newUrl = appendParamToUrl(targetUrl);
				    // 下级页面如果调用setResultData(str)，返回到本页面时，app会回调js的onAppWebResult(requestCode, resultData)方法
                    window.location.href = newUrl;
				}

		</script>
	</head>
    <body>
        <h1>Android通用API示例</h1>
        <b>currentUrl：</b><script>document.write(location.href);</script>
        <br/>
        <br/>
        <b>userAgent：</b><script>document.write(navigator.userAgent);</script>
        <br/>
        <hr/>
        <br/>

        <h2>1.UI相关API</h2>

        <h3>1.1状态栏</h3>
		是否显示：<a href="javascript:app.setStateBarVisible(true)">显示</a>
        &nbsp;&nbsp;<a href="javascript:app.setStateBarVisible(false)">隐藏</a>
        <br/><br/>
        显示模式：<a href="javascript:app.setStateBarMode(true)">深色</a>
        &nbsp;&nbsp;<a href="javascript:app.setStateBarMode(false)">浅色</a>
        <br/><br/>
        背景颜色：<a href="javascript:setStateBarColor()">设置背景颜色</a>
        <br/><br/>

        <h3>1.2标题栏</h3>
        是否显示：<a href="javascript:app.setTitleBarVisible(true)">显示</a>
        &nbsp;&nbsp;<a href="javascript:app.setTitleBarVisible(false)">隐藏</a>
        <br/><br/>
        背景颜色：<a href="javascript:setTitleBarColor()">设置背景颜色</a>
        <br/><br/>
        显示模式：<a href="javascript:app.setTitleBarModel(false)">正常</a>
        &nbsp;&nbsp;<a href="javascript:app.setTitleBarModel(true)">悬浮</a>
        <br/><br/>
        标题文字：<a href="javascript:setTitleText()">设置标题</a>
        <br/><br/>
        返回图标：<a href="javascript:setBackImageUrl()">设置返回图标</a>
        <br/><br/>
        右边文字按钮：<a href="javascript:setRightText()">设置按钮文字</a>
        <br/><br/>
        右边图标按钮：<a href="javascript:setRightImage()">设置按钮图标</a>
        <br/><br/>

        <h3>1.3页面下拉刷新</h3>
        页面下拉刷新：<a href="javascript:openRefresh()">启用</a>
        &nbsp;&nbsp;<a href="javascript:app.setEnableRefresh(false)">禁用</a>
        &nbsp;&nbsp;<a href="javascript:app.stopRefresh()">停止(完成)刷新</a>
        <br/><br/>

        <h3>1.4提示</h3>
        吐丝提示：<a href="javascript:app.showToast('提示信息')">效果1</a>
        &nbsp;&nbsp;<a href="javascript:app.showToast2('提示信息')">效果2</a>
		<br/><br/>
		加载框提示：<a href="javascript:showLoadingDialog()">显示加载框（用于耗时操作）</a>
        <br/><br/>
		进度框提示：<a href="javascript:showProgressDialog()">显示进度框（模拟文件下载）</a>
        <br/><br/>

        <h3>1.5浏览器窗口</h3>
        外部浏览器打开百度-使用Url（支持相对url）：<a href="https://m.baidu.com?appTarget=outerBrowser">打开</a><br/>
        外部浏览器打开百度-使用API（只能完整url）：<a href="javascript:app.openOuterBrowser('https://m.baidu.com')">打开</a><br/><br/>

		当前窗口打开二级页面：<a href="javascript:openUrlInCurrentBrowser('DemoCallWebWebApi_sub.html')">打开</a><br/><br/>

        新窗口打开百度-调用API（只能完整url）：<a href="javascript:apiOpenNewBrowser('打开新窗口（API方式）', 'https://m.baidu.com/')">打开</a><br/>
		新窗口打开二级-调用API（测试返回数据）：<a href="javascript:apiOpenNewBrowserForResult('API方式打开新窗口（测试返回数据）', 'https://duxl.github.io/AndroidQuicklib/app/src/main/assets/DemoCallWebWebApi_ResultData.html', 100)">打开</a><br/><br/>

        新窗口打开百度-使用Url（支持相对url）：<a href="javascript:urlOpenNewBrowser('https://m.baidu.com/?appTarget=newBrowser&appTitle=Url方式打开新窗口')">打开</a><br/>
		新窗口打开二级-使用Url（测试返回数据）：<a href="javascript:urlOpenNewBrowserForResult('DemoCallWebWebApi_ResultData.html?appTarget=newBrowser&appTitle=Url方式打开新窗口（测试返回数据）&requestCode=101')">打开</a><br/><br/>

        关闭当前窗口：<a href="javascript:app.closeBrowser()">关闭</a><br/>

        <h3>1.6页面可见性</h3>
        监听页面可见性：<a href="javascript:urlOpenNewBrowser('DemoCallWebWebApi_Visible.html?appTarget=newBrowser&appTitle=监听页面可见性')">打开</a><br/>
        <br/><br/>

        <h3>1.7拍照和选择图片、文件</h3>
        通过html的input标签调用手机的相机，相册，选择文件功能：<a href="javascript:urlOpenNewBrowserForResult('Demo_File.html?appTarget=newBrowser&appTitle=拍照&选择文件')">打开示例</a><br/><br/>
        <br/><br/>
    </body>
</html>